using System;
using Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Request;
using Sinacor.Servico.Bovespa.Ordens.BusinessEntity;

namespace Sinacor.Servico.Bovespa.Ordens.Service.ServiceImplementation.Translator
{
    public static class TranslateAlterarNegocioRequest
    {
        public static BusinessEntity.Negocio ToNegocio(DataContract.Request.AlterarNegocioRequest from)
        {
            /// Data:25/03/2008 11:40
            /// Autor:DMilanez.7Comm
            /// Obs: Alterado de forma a validar se o negocio foi informado
            if (from == null)
                return null;
            
            BusinessEntity.Negocio to = new BusinessEntity.Negocio();
            to.DataMovimento = from.DataMovimento;
            to.Bolsa = from.Bolsa;
            to.DataPregao = from.DataPregao;
            to.HoraNegocio = from.HoraNegocio;
            to.TipoNaturezaOperacao = (BusinessEntity.Enum.TipoNaturezaOperacao?)from.TipoNaturezaOperacao;
            to.NumeroNegocio = from.NumeroNegocio;
            to.DigitoNegocio = from.DigitoNegocio;
            to.ContraParte = from.ContraParte;
            to.TipoMercado = (BusinessEntity.Enum.TipoMercado?) from.TipoMercado;
            to.TipoTermo = (BusinessEntity.Enum.TipoTermo?)from.TipoTermo;

            to.Titulo = new Sinacor.Servico.Bovespa.Titulo.BusinessEntity.Titulo();
            to.Titulo.Codigo = from.CodigoTitulo;
            to.Titulo.DataPregao = from.DataPregao;
            to.Titulo.TipoMercado = (Sinacor.Servico.Bovespa.Titulo.BusinessEntity.Enum.TipoMercado) from.TipoMercado;
            to.Titulo.Descricao = from.DescricaoTitulo;
            to.Titulo.Especificacao = from.EspecificacaoTitulo;

            to.TituloObjeto = from.TituloObjeto;//20080426 15:29 - Alterado - DMilanez.7Comm
            to.Titulo.TituloObjetoOpcoes = from.TituloObjeto;//20080426 15:29 - Alterado - DMilanez.7Comm

            to.DiasLiquidacao = from.DiasLiquidacao;
            to.FatorValorizacao = from.FatorValorizacao;

            to.PrazoTermo = from.PrazoTermo;
            to.VencimentoOpcoesTermo = from.VencimentoOpcoesTermo;
            to.TipoOrigem = (BusinessEntity.Enum.TipoOrigemNegocio?) from.TipoOrigem;
            to.Quantidade = from.Quantidade;
            to.Preco = from.Preco;
            to.PontaGeradoraOferta = from.PontaGeradoraOferta;
            to.NaoLiquidaNota = from.NaoLiquidaNota;
            to.NegociadoAfterMarket = from.NegociadoAfterMarket;
            to.Observacao = from.Observacao;
            to.TipoLiquidacaoNegocio = (BusinessEntity.Enum.TipoLiquidacaoNegocio?)from.TipoLiquidacao;
            to.TipoEstrategia = (BusinessEntity.Enum.TipoEstrategia?)from.Estrategia;
            to.TipoOfertaBovespaFix = (BusinessEntity.Enum.TipoOfertaBovespaFix?)from.TipoOfertaBovespaFix;

            to.Correspondente = new Sinacor.Servico.Bovespa.Cliente.BusinessEntity.Correspondente();
            to.Correspondente.Codigo = from.CodigoCorrespondente;
            to.Correspondente.PercentualComissao = from.PercentualCorrespondente;
            return to;
        }
    }
}